package com.yonyou.distribute.service;

import com.yonyou.distribute.mapper.StockMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;


/**
 * p10
 * mysql锁之 使用一个更新的sql语句完成判断及更新
 *
 * 问题：
 * 1、锁范围，行锁 表锁
 * 行锁：锁的查询或者更新条件必须是索引字段 && 查询或者更新条件必须是具体值
 * 表锁：
 * 2、同一个商品有多个库存记录
 *
 * 3、无法记录库存变化前后的状态
 */
@Slf4j
@Service
public class MysqlService_4 {


    @Resource
    private StockMapper stockMapper;

    @Value("${server.port}")
    private Integer port;


    public void deduct(){
        try {
            // mysql写操作是原子操作
            // update db_stock set count = count-1 where product_code = '1001' and count >= 1;
            //1、查询库存
            this.stockMapper.updateStock("1001", 1);
            log.info("port:" + port);
            //2、判断库存是否充足

        }finally {
        }
    }
}
